home *** CD-ROM | disk | FTP | other *** search
-
- An dieser Stelle soll einmal demonstriert werden, wie wenig
- Programmierarbeit in diesem Beispielprogramm steckt.
-
- Zunächst werden ganz zu Beginn die Listboxen mit Texten gefüllt und
- ein selbstdefinierter Numberscroller eingerichtet:
-
- PROCEDURE user_rsc_var_init
- '
- b&=65
- FOR a&=0 TO 19
- radio_lstbox_arr$(a&)=CHR$(b&)+" Radio "+STR$(a&+1)
- checl_lstbox_arr$(a&)=CHR$(b&)+" Check "+STR$(a&+1)
- menu_lstbox_arr$(a&)=CHR$(b&)+" Menu "+STR$(a&+1)
- LET open_listbox1_arr$(a&)="Menu "+STR$(a&+1)
- LET open_lstbox2_arr$(a&)="Radio "+STR$(a&+1)
- LET open_lstbox3_arr$(a&)="Check "+STR$(a&+1)
- INC b&
- NEXT a&
- '
- @slidemover_set(input&,slider&,slider&,10,0,127,3,TRUE)
- '
- RETURN
-
- Dann wird die Datei EX.TXT (das ist die Datei, die Sie gerade lesen)
- eingeladen.
-
- PROCEDURE user_on_open
- '
- ' Lade Datei EX.TXT
- '
- LOCAL num_lines&,file$
- '
- num_lines&=250
- DIM txt$(num_lines&),txt!(num_lines&)
- LET file$="EX.TXT"+CHR$(0)
- LET fh&=GEMDOS(61,L:V:file$,0)
- IF fh&=>0
- LET txt%=MAX(1,@fread_to_array(fh&,-1,txt$()))
- ELSE
- LET txt%=0
- ENDIF
- '
- RETURN
-
- In der von faceVALUE vorbereiteten Prozedur "user_rsc_interact" wird
- nun eingetragen, was beim Anwählen der einzelnen Dialogknöpfe und
- Menüpunkte passieren soll.
-
- PROCEDURE user_rsc_interact(index&,tree&,object&,mc&,sub_me&)
- '
- SELECT tree&
- '
- CASE buttons&
- SELECT object&
- CASE close_buttons&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE checks&
- SELECT object&
- CASE check_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE radios&
- SELECT object&
- CASE radios_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE input&
- SELECT object&
- CASE slider&
- a&=@slidemover(index&,slider&,slider&,0,127,3,TRUE)
- CASE callback&
- @rsc_set_text(tree&,show_callback&,callback_var$)
- @rsc_ob_draw(index&,show_callback&)
- CASE input_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE popups&
- SELECT object&
- CASE popup_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE listbxes&
- SELECT object&
- CASE lstbox_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE mstate&
- SELECT object&
- CASE mstate_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE other&
- SELECT object&
- CASE misc_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE resize_me&
- SELECT object&
- CASE resize_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE foldable&
- SELECT object&
- CASE foldable_close&
- @win_close(@find_handle_from_tree(tree&))
- ENDSELECT
- '
- CASE menu&
- SELECT object&
- CASE about&
- ~@alert_wind(1,fv_copyright&,"")
- CASE demo_quit&
- exit_program!=TRUE
- CASE m_buttons&
- ~@win_open_dialog(prg_modal_var&,buttons&,iconify_icon_1&)
- CASE m_status&
- ~@win_open_dialog(prg_modal_var&,checks&,iconify_icon_1&)
- CASE m_radios&
- ~@win_open_dialog(prg_modal_var&,radios&,iconify_icon_1&)
- CASE m_input&
- ~@win_open_dialog(prg_modal_var&,input&,iconify_icon_1&)
- CASE m_popups&
- ~@win_open_dialog(prg_modal_var&,popups&,iconify_icon_1&)
- CASE m_listboxes&
- ~@win_open_dialog(prg_modal_var&,listbxes&,iconify_icon_1&)
- CASE m_multistate&
- ~@win_open_dialog(prg_modal_var&,mstate&,iconify_icon_1&)
- CASE m_resize&
- ~@win_open_dialog(prg_modal_var&,resize_me&,iconify_icon_1&)
- CASE m_foldable&
- ~@win_open_dialog(prg_modal_var&,foldable&,iconify_icon_1&)
- CASE m_other&
- ~@win_open_dialog(prg_modal_var&,other&,iconify_icon_1&)
- CASE menu_ascii&
- ~@win_open_dialog(4,fvt_asci&,-1)
- CASE menu_alerts&
- IF @alert_wind(1,alert_1&,"")=1
- ~@alert_wind(1,alert_3&,"")=1
- ENDIF
- CASE menu_progress&
- @progress_open("New: Title!",-1)
- FOR albert&=0 TO 4000
- EXIT IF @progress_update(INT(albert&/40))
- NEXT albert&
- @progress_close
- CASE menu_busy&
- time&=@busy_open(TRUE)
- FOR a&=0 TO 4000
- EXIT IF @busy_update(time&)
- NEXT a&
- @busy_close
- CASE demo_simple_win&
- ~@win_open(" Standard window "," Info line...",simple_window%,backgrnd&,800,800,16,16,12,0,0,800,800,iconify_icon_1&)
- CASE demo_hor_tlstrip&
- ~@win_open(" Toolstrip window ","",toolstrip_window%,toolstrip&,800,800,16,16,12,0,0,800,800,iconify_icon_1&)
- CASE demo_ver_toolbar&
- ~@win_open(" Toolbar window ","",toolbar_window%,toolbar&,800,800,16,16,12,0,0,800,800,iconify_icon_1&)
- CASE demo_menu_window&
- @open_text_window
- CASE iconify_all&
- @win_iconify_all
- CASE uniconify_all&
- @win_uniconify_all
- ENDSELECT
- ENDSELECT
- RETURN
-
- So einfach funktioniert die Ausgabe Fenster. Die folgende Routine
- wird zum Zeichnen der Fensterinhalte aufgerufen (diese Userfenster-
- Funktion ist nur in der faceVALUE-Vollversion verfügbar):
-
- PROCEDURE user_window_content(index&,userhandle&,off_x%,off_y%,cx&,cy&,cw&,ch&)
- '
- ' Kreise Zeichnen
- '
- LOCAL a&
- SELECT userhandle&
- CASE 12
- FOR a&=95 TO 395 STEP 100
- CIRCLE 400-off_x%,400-off_y%,a&
- NEXT a&
- ENDSELECT
- '
- RETURN
-
- Zum Schluß mußten noch die beiden Prozeduren erstellt werden, um dem
- Textfenster einen Fontselektor zu verpassen:
-
- PROCEDURE open_text_window
- LOCAL handle&,index& !locals
- LET handle&=@textlist_win_open(" System font at 10 points ","",0,3,window_menu&,42,-1,-1,-1,-1,iconify_icon_1&,txt%,txt$())
- IF handle&>0 !if window opened
- index&=@win_get_index(handle&) !find index
- num_fonts&=@vdi_load_fonts(window_array&(index&,22)) !load fonts
- ' these are the extended window_array&() entries:
- window_array&(index&,26)=1 !initial font id
- window_array&(index&,27)=10 !initial font size
- @textlist_resize(index&,txt%,txt$())
- ENDIF
- RETURN
- PROCEDURE change_font(index&)
- LOCAL id&,size&,wcell&,hcell&,ret%,x&,y&,w&,h&,name$,handle&,fontflags&
- IF index&=-1 !if called by shortcut
- ~WIND_GET(0,10,handle&,d&,d&,d&) !get the top window (the window whose shortcut was used)
- index&=@win_get_index(handle&) !find <index&> for this window
- ENDIF
- id&=window_array&(index&,26) !find font id
- size&=window_array&(index&,27) !find font size
- '
- ' 1=include systemfont
- ' 2=include monospaced
- ' 4=include proportional
- ' 8=include bitmap
- ' 240=include vector
- ' 254=include all
- fontflags&=254 !include all
- '
- ret%=@xfsl(window_array&(index&,22),"Choose font",fontflags&,num_fonts&,name$,id&,size&,wcell&,hcell&)
- IF ret%=1 !if new font/size selected
- @win_set_title(index&," "+name$+" "+STR$(size&)+" points ") !set title of window
- ' then fill the extended window_array&() entries correctly:
- window_array&(index&,26)=id& !new font id
- window_array&(index&,27)=size& !new font size
- ' update the window:
- @textlist_resize(index&,txt%,txt$())
- @win_send_redraw(index&,-1,-1,-1,-1) !redraw window
- ENDIF
- RETURN
-
-